﻿using Resto.CostControl.Core.Facade.MaterialModule.FacadeObject;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using Resto.CostControl.Core.Facade.MaterialModule.DataTransferObject;
using Enterprise.Framework.Core.Container;
using Resto.CostControl.Core.Enums;

namespace Resto.CostControl.UnitTest.MaterialModule
{
    
    
    /// <summary>
    ///这是 MaterialFOTest 的测试类，旨在
    ///包含所有 MaterialFOTest 单元测试
    ///</summary>
    [TestClass()]
    public class MaterialFOTest
    {


        private TestContext testContextInstance;

        /// <summary>
        ///获取或设置测试上下文，上下文提供
        ///有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试特性
        // 
        //编写测试时，还可使用以下特性:
        //
        //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //使用 TestInitialize 在运行每个测试前先运行代码
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //使用 TestCleanup 在运行完每个测试后运行代码
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion


        /// <summary>
        ///AddMaterial 的测试
        ///</summary>
        [TestMethod()]
        public void AddMaterialTest()
        {
            MaterialFO target = ObjectCreator.Create<MaterialFO>();
            MaterialDTO materialDTO = new MaterialDTO()
            {
                Code = "02",
                Name = "A2",
                ActualSorage = 100m,
                CurrentPrice = 1.10m,
                Type = MaterialType.RawMaterial,
                SafeStorage = 200m,
                Unit = "ss",
                CategoryCode = "aa",
                Specification = "aa",
                
            };
            target.AddMaterial(materialDTO);

            MaterialDTO materialDTO2 = target.GetMaterialDTO(materialDTO.ID);
            Assert.IsNotNull(materialDTO2);

            //Assert.Inconclusive("无法验证不返回值的方法。");
        }

        ///// <summary>
        /////DeleteMaterial 的测试
        /////</summary>
        //[TestMethod()]
        //public void DeleteMaterialTest()
        //{
        //    MaterialFO target = ObjectCreator.Create<MaterialFO>();
            

        //    // TODO: 初始化为适当的值
        //    int id = 0; // TODO: 初始化为适当的值
        //    target.DeleteMaterial(id);
        //    Assert.Inconclusive("无法验证不返回值的方法。");
        //}

        ///// <summary>
        /////GetMaterialDTO 的测试
        /////</summary>
        //[TestMethod()]
        //public void GetMaterialDTOTest()
        //{
        //    MaterialFO target = new MaterialFO(); // TODO: 初始化为适当的值
        //    int id = 0; // TODO: 初始化为适当的值
        //    MaterialDTO expected = null; // TODO: 初始化为适当的值
        //    MaterialDTO actual;
        //    actual = target.GetMaterialDTO(id);
        //    Assert.AreEqual(expected, actual);
        //    Assert.Inconclusive("验证此测试方法的正确性。");
        //}

        ///// <summary>
        /////UpdateMaterial 的测试
        /////</summary>
        //[TestMethod()]
        //public void UpdateMaterialTest()
        //{
        //    MaterialFO target = new MaterialFO(); // TODO: 初始化为适当的值
        //    MaterialDTO materialDTO = null; // TODO: 初始化为适当的值
        //    target.UpdateMaterial(materialDTO);
        //    Assert.Inconclusive("无法验证不返回值的方法。");
        //}
    }
}
